package myproject.CarRentalSystem;

/**
 * 租赁
 * 承租人，租车时间，手机号，租的什么车？
 */
public class CarRental {
    private String name;
    private String phone;
    private Car[] cars = new Car[20];
    private int count;//公司车辆数目
    private int record;//租车记录数目
    private float money;
    private Customer[] customers = new Customer[1000];


    public CarRental(String name, String phone) {
        this.name = name;
        this.phone = phone;
    }

    public String getName() {
        return name;
    }

    public String getPhone() {
        return phone;
    }

    public Car[] getCars() {
        return cars;
    }

    public int getCount() {
        return count;
    }

    public float getMoney() {
        return money;
    }

    public void setMoney(float money) {
        this.money = money;
    }

    //获取车辆信息
    public void showCarInfo() {
        if (count == 0) {
            System.out.println("没有车辆信息");
            return;
        }
        System.out.println("车辆信息");
        for (int i = 0; i < count; i++) {
            System.out.println(cars[i].toString());
        }

    }

    //可租车信息
    public void show(int no) {
        if (count == 0) {
            System.out.println("没有车辆信息");
            return;
        }
        System.out.println("可租用车辆信息：");
        for (int i = 0; i < count; i++) {
            if (cars[i].getState()) {
                continue;
            }
            if (no == 1 && cars[i] instanceof Saloon) {
                System.out.println(cars[i].toString());
            } else if (no == 2 && cars[i] instanceof Bus) {
                System.out.println(cars[i].toString());
            }
//            if(no == 1){
//                if(cars[i] instanceof Saloon &&!cars[i].getState()){
//                    System.out.println(cars[i].toString());
//                }
//            }else if(no == 2){
//                if(cars[i] instanceof Bus &&!cars[i].getState()){
//                    System.out.println(cars[i].toString());
//                }
//            }
        }
    }

    /**
     * 租车
     */

    public Car rentCar(int no, String plate) {
        if (count == 0) {
            return null;
        }
        for (int i = 0; i < count; i++) {
            if (no == 1) {
                if (!cars[i].getState() && cars[i].getPlate().equals(plate) && cars[i] instanceof Saloon) {
                    //车辆状态state的初始值是false,在本程序代表可以租用
                    //改变车辆状态，true代表已租用
                    cars[i].setState(true);
                    return cars[i];
                }
            } else if (no == 2) {
                if (!cars[i].getState() && cars[i].getPlate().equals(plate) && cars[i] instanceof Bus) {
                    cars[i].setState(true);
                    return cars[i];
                }
            }

        }
        return null;
    }

    //采购新车
    public boolean buyCar(Car car) {
        if (count >= cars.length) {
            //动态扩容
            Car[] newCars = new Car[cars.length * 2];
            for (int i = 0; i < cars.length; i++) {
                newCars[i] = cars[i];
            }
            cars = newCars;
        }
        cars[count++] = car;
        return true;
    }

    /**
     * 还车
     * 情况1：车库存在这辆车，但是未被租用 return 1
     * 情况2：存在这辆车而且已经出租了     return 2
     * 情况3：没有这辆车，没找到对应车牌   return 3
     *
     * @param plate
     * @return
     */
    public int rebackCar(String plate) {
        for(int i =0;i<count;i++){
            if(cars[i].getPlate().equals(plate)){
                if(!cars[i].getState()){
                    return 1;//车库存在这辆车，但是未被租用
                }else {
                    //是这辆车而且已经出租了
                    cars[i].setState(false);
                    return 2;//换车成功
                }
            }

//            if(cars[i].getPlate().equals(plate)&&cars[i].getState()){
//                //将车辆状态置为false表示可以租用
//
//            }
        }
        return 3;//代表车库没有这辆车

    }

    /**
     * 报废
     * 情况1：车牌号不存在
     * 情况2：车牌号存在，但已出租，不可报废
     * 情况3：可以报废
     * @param plate
     * @return
     */
    public int scrap(String plate){

        for (int i = 0;i<count;i++){
            if(cars[i].getPlate().equals(plate)){
                if(cars[i].getState()){
                    return 2;
                }else {
                    //此时找到这辆车并且没有出租，可以（删除）报废
                    for (int j = i;j<count-1;j++){
                        cars[j]=cars[j+1];
                    }
                    cars[count-1]=null;
                    count--;//车辆数减一
                    return 3;//报废成功
                }
            }
        }
        return 1;//车牌不存在
    }
//    public float earnMoney(Car car){
//        return money+=car.rentMoney()
//    }

    /**
     * 添加出租记录
     * @param customer
     */
    public void record(Customer customer){
        //动态扩容
        if(record>=customers.length){
            Customer[] newCustomers = new Customer[customers.length*2];
            for (int i =0;i<record;i++){
                newCustomers[i]=customers[i];

            }
            customers=newCustomers;
        }
        customers[record++] = customer;
    }
    public void showRecord(){
        for (int i = 0;i<record;i++){
            System.out.println(customers[i].toString());
        }
    }

    /**
     * 查看收入
     * @param money
     * @return
     */
    public float earnMoney(float money){
       return this.money +=money;
    }
}
